package com.ai.service.made;

import com.ai.common.CommonResponse;
import com.ai.entity.made.AlgorithmPackageStatus;
import com.ai.entity.made.page.AlgorithmPackagePage;
import com.ai.model.param.AlgorithmPackageParam;
import com.ai.model.param.DeployAlgorithmParam;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jiaok
 * @since 2024-08-12
 */
public interface IAlgorithmPackageStatusService extends IService<AlgorithmPackageStatus> {

    /**
     * 算法上传
     * @param file
     * @param algorithmPackageParam
     * @return
     */
    CommonResponse uploadAlgorithm(MultipartFile file, AlgorithmPackageParam algorithmPackageParam);

    /**
     * 获取所有的服务器列表
     * @return
     */
    CommonResponse getServerList();

    /**
     * 获取指定的算法的所有版本
     * @param algorithmId 算法id
     * @return
     */
    CommonResponse getVersionList(String algorithmId);

    /**
     * 部署算法到指定的服务器
     * @param deployAlgorithmParam
     * @return
     */
    CommonResponse deployAlgorithm(DeployAlgorithmParam deployAlgorithmParam);

    /**
     * 获取指定算法的所有版本信息
     * @param algorithmPackagePage 指定算法
     * @return
     */
    CommonResponse getRevisionHistory(AlgorithmPackagePage algorithmPackagePage);


    /**
     * 获取算法部署的所有关系
     * @param functionId
     * @return
     */
    CommonResponse getDeployRelationList(String functionId);

    /**
     * 开启算法
     * @param relationId 算法服务器关系
     * @param switchStatus 1 开启，2关闭，3状态
     * @return
     */
    CommonResponse switchAlgorithm(String relationId,String switchStatus);

    /**
     * 更新算法信息
     * @param algorithmPackageStatus 算法相关信息
     * @return
     */
    CommonResponse updateAlgorithmInfo(AlgorithmPackageStatus algorithmPackageStatus);

    /**
     * 获取指定算法的详细信息
     * @param algorithmId 算法id
     * @return
     */
    CommonResponse getAlgorithmInfoById(String algorithmId);

    /**
     * 获取指定功能的详细信息
     * @param functionId
     * @return
     */
    CommonResponse getFunctionInfo(String functionId);
}
